// This example shows how to subscribe to item changes and obtain the events by pulling them. using System; using OpcLabs.EasyOpc.DataAccess; using OpcLabs.EasyOpc.DataAccess.OperationModel; namespace DocExamples.DataAccess._EasyDAClient { partial class PullItemChanged { public static void Main1() { // Instantiate the client object. // In order to use event pull, you must set a non-zero queue capacity upfront. var client = new EasyDAClient { PullItemChangedQueueCapacity = 1000 }; Console.WriteLine("Subscribing item changes..."); client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000); Console.WriteLine("Processing item changes for 1 minute..."); int endTick = Environment.TickCount + 60 * 1000; do { EasyDAItemChangedEventArgs eventArgs = client.PullItemChanged(2 * 1000); if (!(eventArgs is null)) // Handle the notification event Console.WriteLine(eventArgs); } while (Environment.TickCount < endTick); Console.WriteLine("Unsubscribing item changes..."); client.UnsubscribeAllItems(); Console.WriteLine("Finished."); } } }
# This example shows how to subscribe to item changes and obtain the events by pulling them. #requires -Version 5.1 using namespace OpcLabs.EasyOpc.DataAccess # The path below assumes that the current directory is [ProductDir]/Examples-NET/PowerShell/Windows . Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassicCore.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassic.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassicComponents.dll" # Instantiate the client object. $client = New-Object EasyDAClient # In order to use event pull, you must set a non-zero queue capacity upfront. $client.PullItemChangedQueueCapacity = 1000 Write-Host "Subscribing item..." [IEasyDAClientExtension]::SubscribeItem($client, "", "OPCLabs.KitServer.2", "Simulation.Random", 1000) Write-Host "Processing item changes for 1 minute..." $stopwatch = [System.Diagnostics.Stopwatch]::StartNew() while ($stopwatch.Elapsed.TotalSeconds -lt 60) { $eventArgs = [IEasyDAClientExtension]::PullItemChanged($client, 2*1000) if ($eventArgs -ne $null) { # Handle the notification event Write-Host $eventArgs } } Write-Host "Unsubscribing items..." $client.UnsubscribeAllItems() Write-Host "Finished."
# This example shows how to subscribe to item changes and obtain the events by pulling them. # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc.DataAccess import * # Instantiate the client object client = EasyDAClient() # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') IEasyDAClientExtension.SubscribeItem(client, '', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = IEasyDAClientExtension.PullItemChanged(client, 2*1000) if eventArgs is not None: # Handle the notification event print(eventArgs) print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
' This example shows how to subscribe to item changes and obtain the events by pulling them. Imports OpcLabs.EasyOpc.DataAccess Imports OpcLabs.EasyOpc.DataAccess.OperationModel Namespace DataAccess._EasyDAClient Partial Friend Class PullItemChanged Public Shared Sub Main1() Dim client = New EasyDAClient() ' In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 Console.WriteLine("Subscribing item changes...") client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000) Console.WriteLine("Processing item changes for 1 minute...") Dim endTick As Integer = Environment.TickCount + 60 * 1000 Do Dim eventArgs As EasyDAItemChangedEventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event Console.WriteLine(eventArgs) End If Loop While Environment.TickCount < endTick Console.WriteLine("Unsubscribing item changes...") client.UnsubscribeAllItems() Console.WriteLine("Finished.") End Sub End Class End Namespace
// This example shows how to subscribe to item changes and obtain the events by pulling them. var Client = new ActiveXObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient"); // In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity = 1000; WScript.Echo("Subscribing item changes..."); Client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000); WScript.Echo("Processing item changes for 1 minute..."); var endTime = new Date().getTime() + 60*1000 do { var EventArgs = Client.PullItemChanged(2*1000); if (EventArgs !== null) { // Handle the notification event WScript.Echo(EventArgs); } } while(new Date().getTime() < endTime); WScript.Echo("Unsubscribing item changes..."); Client.UnsubscribeAllItems(); WScript.Echo("Finished.");
// This example shows how to subscribe to item changes and obtain the events by pulling them. class procedure PullItemChanged.Main; var Client: OpcLabs_EasyOpcClassic_TLB._EasyDAClient; EndTick: Cardinal; EventArgs: _EasyDAItemChangedEventArgs; begin // Instantiate the client object Client := CoEasyDAClient.Create; // In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity := 1000; WriteLn('Subscribing item changes...'); Client.SubscribeItem('', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000); WriteLn('Processing item changes for 1 minute...'); EndTick := Ticks + 60*1000; while Ticks < EndTick do begin EventArgs := Client.PullItemChanged(2*1000); if EventArgs <> nil then // Handle the notification event WriteLn(EventArgs.ToString); end; WriteLn('Unsubscribing item changes...'); Client.UnsubscribeAllItems; WriteLn('Finished.'); end;
// This example shows how to subscribe to item changes and obtain the events by pulling them. $Client = new COM("OpcLabs.EasyOpc.DataAccess.EasyDAClient"); // In order to use event pull, you must set a non-zero queue capacity upfront. $Client->PullItemChangedQueueCapacity = 1000; print "Subscribing item changes...\n"; $Client->SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000); print "Processing item changed events for 1 minute...\n"; $endTime = time() + 60; do { $EventArgs = $Client->PullItemChanged(2*1000); if (!is_null($EventArgs)) { // Handle the notification event print $EventArgs->ToString(); print "\n"; } } while (time() < $endTime);
// This example shows how to subscribe to item changes and obtain the events by pulling them. mle_outputtext.Text = "" // Instantiate the client object OLEObject client client = CREATE OLEObject client.ConnectToNewObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient") // In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 mle_outputtext.Text = mle_outputtext.Text + "Subscribing item changes..." + "~r~n" client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000) mle_outputtext.Text = mle_outputtext.Text + "Processing item changes for 1 minute..." + "~r~n" Time endTime = RelativeTime(Now(), 60) DO OLEObject eventArgs eventArgs = client.PullItemChanged(2*1000) IF NOT IsNull(eventArgs) THEN // Handle the notification event mle_outputtext.Text = mle_outputtext.Text + eventArgs.DisplayString + "~r~n" END IF LOOP WHILE Now() < endTime mle_outputtext.Text = mle_outputtext.Text + "Unsubscribing item changes..." + "~r~n" client.UnsubscribeAllItems() mle_outputtext.Text = mle_outputtext.Text + "~r~n" mle_outputtext.Text = mle_outputtext.Text + "Finished." + "~r~n"
# This example shows how to subscribe to item changes and obtain the events by pulling them. # The Python for Windows (pywin32) extensions package is needed. Install it using "pip install pypiwin32". # CAUTION: We now recommend using Python.NET package instead. Full set of examples with Python.NET is available! import time import win32com.client # Instantiate the client object client = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.EasyDAClient') # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') client.SubscribeItem('', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = client.PullItemChanged(2*1000) if eventArgs is not None: # Handle the notification event print(eventArgs) print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
Rem This example shows how to subscribe to item changes and obtain the events by pulling them. Private Sub PullItemChanged_Main_Command_Click() OutputText = "" Dim eventArgs As EasyDAItemChangedEventArgs ' Instantiate the client object Dim client As New EasyDAClient ' In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 OutputText = OutputText & "Subscribing item changes..." & vbCrLf Call client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000) OutputText = OutputText & "Processing item changes for 1 minute..." & vbCrLf Dim endTick As Long endTick = GetTickCount + 60000 While GetTickCount < endTick Set eventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event OutputText = OutputText & eventArgs & vbCrLf End If Wend OutputText = OutputText & "Unsubscribing item changes..." & vbCrLf client.UnsubscribeAllItems OutputText = OutputText & "Finished." & vbCrLf End Sub
Rem This example shows how to subscribe to item changes and obtain the events by pulling them. Option Explicit Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient") ' In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity = 1000 WScript.Echo "Subscribing item changes..." Client.SubscribeItem "", "OPCLabs.KitServer.2", "Simulation.Random", 1000 WScript.Echo "Processing item changes for 1 minute..." Dim endTime: endTime = Now() + 60*(1/24/60/60) Do Dim EventArgs: Set EventArgs = Client.PullItemChanged(2*1000) If Not (EventArgs Is Nothing) Then ' Handle the notification event WScript.Echo EventArgs End If Loop While Now() < endTime WScript.Echo "Unsubscribing item changes..." Client.UnsubscribeAllItems WScript.Echo "Finished."
// This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. using System; using OpcLabs.EasyOpc.DataAccess; using OpcLabs.EasyOpc.DataAccess.OperationModel; namespace DocExamples.DataAccess._EasyDAClient { partial class PullItemChanged { public static void MultipleItems() { // Instantiate the client object. // In order to use event pull, you must set a non-zero queue capacity upfront. var client = new EasyDAClient { PullItemChangedQueueCapacity = 1000 }; Console.WriteLine("Subscribing item changes..."); client.SubscribeMultipleItems( new[] { new DAItemGroupArguments("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, null), new DAItemGroupArguments("", "OPCLabs.KitServer.2", "Trends.Ramp (1 min)", 1000, null), new DAItemGroupArguments("", "OPCLabs.KitServer.2", "Trends.Sine (1 min)", 1000, null), // Intentionally specifying an unknown item here, to demonstrate its behavior. new DAItemGroupArguments("", "OPCLabs.KitServer.2", "SomeUnknownItem", 1000, null) }); Console.WriteLine("Processing item changes for 1 minute..."); int endTick = Environment.TickCount + 60 * 1000; do { EasyDAItemChangedEventArgs eventArgs = client.PullItemChanged(2 * 1000); if (!(eventArgs is null)) // Handle the notification event if (eventArgs.Succeeded) Console.WriteLine($"{eventArgs.Arguments.ItemDescriptor.ItemId}: {eventArgs.Vtq}"); else Console.WriteLine($"{eventArgs.Arguments.ItemDescriptor.ItemId} *** Failure: {eventArgs.ErrorMessageBrief}"); } while (Environment.TickCount < endTick); Console.WriteLine("Unsubscribing item changes..."); client.UnsubscribeAllItems(); Console.WriteLine("Finished."); } } }
# This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. #requires -Version 5.1 using namespace OpcLabs.EasyOpc.DataAccess using namespace OpcLabs.EasyOpc.DataAccess.OperationModel # The path below assumes that the current directory is [ProductDir]/Examples-NET/PowerShell/Windows . Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassicCore.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassic.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassicComponents.dll" # Instantiate the client object. $client = New-Object EasyDAClient # In order to use event pull, you must set a non-zero queue capacity upfront. $client.PullItemChangedQueueCapacity = 1000 Write-Host "Subscribing item changes..." $handleArray = [OpcLabs.EasyOpc.DataAccess.IEasyDAClientExtension]::SubscribeMultipleItems($client, @( (New-Object DAItemGroupArguments("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, $null)), (New-Object DAItemGroupArguments("", "OPCLabs.KitServer.2", "Trends.Ramp (1 min)", 1000, $null)), (New-Object DAItemGroupArguments("", "OPCLabs.KitServer.2", "Trends.Sine (1 min)", 1000, $null)), # Intentionally specifying an unknown item here, to demonstrate its behavior. (New-Object DAItemGroupArguments("", "OPCLabs.KitServer.2", "SomeUnknownItem", 1000, $null)) )) Write-Host "Processing item changes for 1 minute..." $stopwatch = [System.Diagnostics.Stopwatch]::StartNew() while ($stopwatch.Elapsed.TotalSeconds -lt 60) { $eventArgs = [IEasyDAClientExtension]::PullItemChanged($client, 2*1000) if ($eventArgs -ne $null) { # Handle the notification event if ($eventArgs.Succeeded) { Write-Host "$($eventArgs.Arguments.ItemDescriptor.ItemId): $($eventArgs.Vtq)" } else { Write-Host "$($eventArgs.Arguments.ItemDescriptor.ItemId) *** Failure: $($eventArgs.ErrorMessageBrief)" } } } Write-Host "Unsubscribing item changes..." $client.UnsubscribeAllItems() Write-Host "Finished."
# This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc.DataAccess import * from OpcLabs.EasyOpc.DataAccess.OperationModel import * # Instantiate the client object client = EasyDAClient() # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') client.SubscribeMultipleItems([ EasyDAItemSubscriptionArguments('', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000, None), EasyDAItemSubscriptionArguments('', 'OPCLabs.KitServer.2', 'Trends.Ramp (1 min)', 1000, None), EasyDAItemSubscriptionArguments('', 'OPCLabs.KitServer.2', 'Trends.Sine (1 min)', 1000, None), EasyDAItemSubscriptionArguments('', 'OPCLabs.KitServer.2', 'UnknownItem', 1000, None), ]) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = IEasyDAClientExtension.PullItemChanged(client, 2*1000) if eventArgs is not None: # Handle the notification event if (eventArgs.Succeeded): print(eventArgs.Arguments.ItemDescriptor.ItemId, ': ', eventArgs.Vtq, sep='') else: print(eventArgs.Arguments.ItemDescriptor.ItemId, ' *** Failure: ', eventArgs.ErrorMessageBrief, sep='') print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
// This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. class procedure PullItemChanged.MultipleItems; var Arguments: OleVariant; Client: OpcLabs_EasyOpcClassic_TLB._EasyDAClient; EndTick: Cardinal; EventArgs: _EasyDAItemChangedEventArgs; HandleArray: OleVariant; ItemSubscriptionArguments1: _EasyDAItemSubscriptionArguments; ItemSubscriptionArguments2: _EasyDAItemSubscriptionArguments; ItemSubscriptionArguments3: _EasyDAItemSubscriptionArguments; ItemSubscriptionArguments4: _EasyDAItemSubscriptionArguments; begin ItemSubscriptionArguments1 := CoEasyDAItemSubscriptionArguments.Create; ItemSubscriptionArguments1.ServerDescriptor.ServerClass := 'OPCLabs.KitServer.2'; ItemSubscriptionArguments1.ItemDescriptor.ItemID := 'Simulation.Random'; ItemSubscriptionArguments1.GroupParameters.RequestedUpdateRate := 1000; ItemSubscriptionArguments2 := CoEasyDAItemSubscriptionArguments.Create; ItemSubscriptionArguments2.ServerDescriptor.ServerClass := 'OPCLabs.KitServer.2'; ItemSubscriptionArguments2.ItemDescriptor.ItemID := 'Trends.Ramp (1 min)'; ItemSubscriptionArguments2.GroupParameters.RequestedUpdateRate := 1000; ItemSubscriptionArguments3 := CoEasyDAItemSubscriptionArguments.Create; ItemSubscriptionArguments3.ServerDescriptor.ServerClass := 'OPCLabs.KitServer.2'; ItemSubscriptionArguments3.ItemDescriptor.ItemID := 'Trends.Sine (1 min)'; ItemSubscriptionArguments3.GroupParameters.RequestedUpdateRate := 1000; // Intentionally specifying an unknown item here, to demonstrate its behavior. ItemSubscriptionArguments4 := CoEasyDAItemSubscriptionArguments.Create; ItemSubscriptionArguments4.ServerDescriptor.ServerClass := 'OPCLabs.KitServer.2'; ItemSubscriptionArguments4.ItemDescriptor.ItemID := 'SomeUnknownItem'; ItemSubscriptionArguments4.GroupParameters.RequestedUpdateRate := 1000; Arguments := VarArrayCreate([0, 3], varVariant); Arguments[0] := ItemSubscriptionArguments1; Arguments[1] := ItemSubscriptionArguments2; Arguments[2] := ItemSubscriptionArguments3; Arguments[3] := ItemSubscriptionArguments4; // Instantiate the client object Client := CoEasyDAClient.Create; // In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity := 1000; WriteLn('Subscribing item changes...'); TVarData(HandleArray).VType := varArray or varVariant; TVarData(HandleArray).VArray := PVarArray( Client.SubscribeMultipleItems(Arguments)); WriteLn('Processing item changes for 1 minute...'); EndTick := Ticks + 60*1000; while Ticks < EndTick do begin EventArgs := Client.PullItemChanged(2*1000); if EventArgs <> nil then // Handle the notification event if eventArgs.Succeeded then WriteLn(eventArgs.Arguments.ItemDescriptor.ItemId, ': ', eventArgs.Vtq.ToString) else WriteLn(eventArgs.Arguments.ItemDescriptor.ItemId, ' *** Failure: ', eventArgs.ErrorMessageBrief); end; WriteLn('Unsubscribing item changes...'); Client.UnsubscribeAllItems; VarClear(HandleArray); VarClear(Arguments); WriteLn('Finished.'); end;
# This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. # The Python for Windows (pywin32) extensions package is needed. Install it using "pip install pypiwin32". # CAUTION: We now recommend using Python.NET package instead. Full set of examples with Python.NET is available! import time import win32com.client # Instantiate the client object client = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.EasyDAClient') # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') itemSubscriptionArguments1 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments1.ServerDescriptor.ServerClass = 'OPCLabs.KitServer.2' itemSubscriptionArguments1.ItemDescriptor.ItemID = 'Simulation.Random' itemSubscriptionArguments1.GroupParameters.RequestedUpdateRate = 1000 itemSubscriptionArguments2 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments2.ServerDescriptor.ServerClass = 'OPCLabs.KitServer.2' itemSubscriptionArguments2.ItemDescriptor.ItemID = 'Trends.Ramp (1 min)' itemSubscriptionArguments2.GroupParameters.RequestedUpdateRate = 1000 itemSubscriptionArguments3 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments3.ServerDescriptor.ServerClass = 'OPCLabs.KitServer.2' itemSubscriptionArguments3.ItemDescriptor.ItemID = 'Trends.Sine (1 min)' itemSubscriptionArguments3.GroupParameters.RequestedUpdateRate = 1000 # Intentionally specifying an unknown item here, to demonstrate its behavior. itemSubscriptionArguments4 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments4.ServerDescriptor.ServerClass = 'OPCLabs.KitServer.2' itemSubscriptionArguments4.ItemDescriptor.ItemID = 'UnknownItem' itemSubscriptionArguments4.GroupParameters.RequestedUpdateRate = 1000 arguments = [ itemSubscriptionArguments1, itemSubscriptionArguments2, itemSubscriptionArguments3, itemSubscriptionArguments4, ] client.SubscribeMultipleItems(arguments) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = client.PullItemChanged(2*1000) if eventArgs is not None: # Handle the notification event if (eventArgs.Succeeded): print(eventArgs.Arguments.ItemDescriptor.ItemId, ': ', eventArgs.Vtq, sep='') else: print(eventArgs.Arguments.ItemDescriptor.ItemId, ' *** Failure: ', eventArgs.ErrorMessageBrief, sep='') print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
Rem This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. Private Sub PullItemChanged_MultipleItems_Command_Click() OutputText = "" Dim eventArgs As EasyDAItemChangedEventArgs Dim itemSubscriptionArguments1 As New EasyDAItemSubscriptionArguments itemSubscriptionArguments1.serverDescriptor.ServerClass = "OPCLabs.KitServer.2" itemSubscriptionArguments1.ItemDescriptor.itemId = "Simulation.Random" itemSubscriptionArguments1.GroupParameters.requestedUpdateRate = 1000 Dim itemSubscriptionArguments2 As New EasyDAItemSubscriptionArguments itemSubscriptionArguments2.serverDescriptor.ServerClass = "OPCLabs.KitServer.2" itemSubscriptionArguments2.ItemDescriptor.itemId = "Trends.Ramp (1 min)" itemSubscriptionArguments2.GroupParameters.requestedUpdateRate = 1000 Dim itemSubscriptionArguments3 As New EasyDAItemSubscriptionArguments itemSubscriptionArguments3.serverDescriptor.ServerClass = "OPCLabs.KitServer.2" itemSubscriptionArguments3.ItemDescriptor.itemId = "Trends.Sine (1 min)" itemSubscriptionArguments3.GroupParameters.requestedUpdateRate = 1000 ' Intentionally specifying an unknown item here, to demonstrate its behavior. Dim itemSubscriptionArguments4 As New EasyDAItemSubscriptionArguments itemSubscriptionArguments4.serverDescriptor.ServerClass = "OPCLabs.KitServer.2" itemSubscriptionArguments4.ItemDescriptor.itemId = "SomeUnknownItem" itemSubscriptionArguments4.GroupParameters.requestedUpdateRate = 1000 Dim arguments(3) As Variant Set arguments(0) = itemSubscriptionArguments1 Set arguments(1) = itemSubscriptionArguments2 Set arguments(2) = itemSubscriptionArguments3 Set arguments(3) = itemSubscriptionArguments4 ' Instantiate the client object Dim client As New EasyDAClient ' In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 OutputText = OutputText & "Subscribing item changes..." & vbCrLf Dim handleArray() As Variant handleArray = client.SubscribeMultipleItems(arguments) OutputText = OutputText & "Processing item changes for 1 minute..." & vbCrLf Dim endTick As Long endTick = GetTickCount + 60000 While GetTickCount < endTick Set eventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event If eventArgs.Succeeded Then OutputText = OutputText & eventArgs.arguments.ItemDescriptor.itemId & ": " & eventArgs.vtq & vbCrLf Else OutputText = OutputText & eventArgs.arguments.ItemDescriptor.itemId & " *** Failure: " & eventArgs.ErrorMessageBrief & vbCrLf End If End If Wend OutputText = OutputText & "Unsubscribing item changes..." & vbCrLf client.UnsubscribeAllItems OutputText = OutputText & "Finished." & vbCrLf End Sub
Copyright © 2004-2023 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Send Documentation Feedback. Resources: Knowledge Base. Technical support: Online Forums, FAQ.